package com.xh3140.xwidget.dialog.params;

import android.content.Context;

import androidx.annotation.ColorInt;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;

import com.xh3140.xwidget.dialog.callback.ConfigViewCallback;
import com.xh3140.xwidget.dialog.view.ListView;

import java.util.ArrayList;
import java.util.List;

/**
 * 对话框列表主体视图配置属性
 * 每一个属性都有默认的设定值
 * 在创建对话框时这些属性可以自定义修改
 */
public final class ListParams extends AbstractParams {
  /**
   * 列表视图项目属性列表
   */
  public final List<ItemParams> items = new ArrayList<>();
  /**
   * 列表视图是否是单选列表
   */
  public boolean radio = true;
  /**
   * 列表视图是否有分割线
   */
  public boolean hasDivider = false;
  /**
   * 列表视图分割线颜色 argb
   */
  @ColorInt
  public int dividerColor = 0xFFD7D7DB;
  /**
   * 列表视图分割线厚度 px
   */
  @Px
  public int dividerThickness = dp2px(1);
  /**
   * 列表视图多选默认的选取位置索引组
   */
  public int checkedIndex = -1;
  /**
   * 列表视图多选默认的选取位置索引组
   */
  public List<Integer> checkedIndexList = new ArrayList<>();
  /**
   * 配置回调
   * 拥有绝对控制权的回调，它在其他属性配置结束后回调
   * 一般情况不要使用它，除非提供的现有配置属性不满足需求
   */
  @Nullable
  public ConfigViewCallback<ListView> callback = null;

  public ListParams(@NonNull Context context, @IntRange(from = 0) int itemCount) {
    super(context);
    for (int i = 0; i < itemCount; ++i) {
      items.add(new ItemParams(context));
    }
  }
}